#include <stdio.h>

// 函数：冒泡排序（升序或降序）
void bubbleSort(int arr[], int n, int ascending) {
    // 进行 n-1 轮比较
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            // 如果是升序排序，且 arr[j] > arr[j+1]，则交换
            // 如果是降序排序，且 arr[j] < arr[j+1]，则交换
            if ((ascending && arr[j] > arr[j + 1]) || (!ascending && arr[j] < arr[j + 1])) {
                // 交换 arr[j] 和 arr[j+1]
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 函数：打印数组
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[] = { 12, 4, 5, 6, 7, 3, 9 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int choice;

    // 输入排序方式：1 为升序，0 为降序
    printf("select sort mode 1:up 0:down");
    scanf("%d", &choice);

    // 排序并输出结果
    bubbleSort(arr, n, choice);

    printf("after sort:");
    printArray(arr, n);

    return 0;
}
